package ar.edu.ufasta.presupuestos.servicios.presupuesto;

import java.util.ArrayList;
import java.util.List;

import ar.edu.ufasta.presupuestos.logica.entidades.articulo.Articulo;
import ar.edu.ufasta.presupuestos.logica.entidades.articulo.ArticuloComplejo;
import ar.edu.ufasta.presupuestos.logica.entidades.articulo.ArticuloSimple;
import ar.edu.ufasta.presupuestos.logica.entidades.articulo.DetalleArticulo;
import ar.edu.ufasta.presupuestos.logica.entidades.presupuesto.Presupuesto;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.DetalleRemito;

public class DetailsBuilder {
	
	private static DetailsBuilder instance;
	
	private DetailsBuilder() {
	}
	
	public static DetailsBuilder getInstance() {
		if(instance==null){
			instance = new DetailsBuilder();
		}
		return instance;
	}
	
	public List<DetalleArticulo> getDetallesArticulo(Articulo articulo, Integer cantidad){
		List<DetalleArticulo> detalles = new ArrayList<DetalleArticulo>();
		DetalleArticulo detalle = new DetalleArticulo();
		detalle.setArticulo(articulo);
		detalle.setCantidad(cantidad);
		detalles.add(detalle);
		if(articulo instanceof ArticuloComplejo){
			ArticuloComplejo complejo = (ArticuloComplejo) articulo;
			for(DetalleArticulo item: complejo.getDetalle()){
				detalles.addAll(this.getDetallesArticulo(item.getArticulo(), cantidad* item.getCantidad()));
			}
		}
		return detalles;
	}
	
	public DetalleRemito buildDetail(Articulo article, Integer cantidad, Presupuesto presupuesto){
		DetalleRemito detalleRemito = new DetalleRemito();
		detalleRemito.setArticulo(article);
		detalleRemito.setCantidad(cantidad);
		detalleRemito.setPresupuesto(presupuesto);
		return detalleRemito;
	}
	
}
